package cn.oracle.eshop.Inventory.command;

import cn.oracle.eshop.Inventory.dao.GoodsStockDAO;
import cn.oracle.eshop.Inventory.domain.GoodsStockDO;
import cn.oracle.eshop.comment.util.DateProvider;
import cn.oracle.eshop.wms.domain.PurchaseInputOrderItemDTO;

import java.util.List;
import java.util.Map;

/** 采购入库库存更新命令
 * @author wyh
 * @ClassName PurchaseInputStockUpdateCommand
 * @date 2022/3/29 /23:06
 */

public class PurchaseInputStockUpdateCommand extends AbstractGoodsStockUpdaterCommand{


    /**
     * 采购入库单条目DTO集合
     */
    private Map<Long, PurchaseInputOrderItemDTO> purcahseInputOrderItemDTOMap;
    /**
     * 构造函数
     * @param goodsStockDOs 商品库存DO对象
     * @param goodsStockDAO 商品库存管理模块的DAO组件
     * @param dateProvider 日期辅助组件
     */
    public PurchaseInputStockUpdateCommand(List<GoodsStockDO> goodsStockDOs,
                                           GoodsStockDAO goodsStockDAO,
                                           DateProvider dateProvider,
                                           Map<Long, PurchaseInputOrderItemDTO> purcahseInputOrderItemDTOMap) {
        super(goodsStockDOs, goodsStockDAO, dateProvider);
        this.purcahseInputOrderItemDTOMap = purcahseInputOrderItemDTOMap;
    }


    /**更新销售库存*/
    @Override
    protected void updateSaleStockQuantity() {
        for(GoodsStockDO goodsStockDO : goodsStockDOs) {
            PurchaseInputOrderItemDTO purchaseInputOrderItemDTO =
                    purcahseInputOrderItemDTOMap.get(goodsStockDO.getId());
            goodsStockDO.setSaleStockQuantity(goodsStockDO.getSaleStockQuantity()
                    + purchaseInputOrderItemDTO.getArrivalCount());
        }

    }
/**更新锁定库存*/
    @Override
    protected void updateLockedStockQuantity() {

    }
    /**
     * 更新已销售库存
     */
    @Override
    protected void updateSaledStockQuantity() {

    }
}
